package main

import (
	"regexp"
	"fmt"
)

func main()  {
	buf := "abcazca7caac888a9ctac"

	//解释规则，开头是a中间任意字符结尾是c
	reg1 := regexp.MustCompile(`a.c`)
	//解释失败，终止程序执行
	if reg1 == nil{
		fmt.Println("regexp error")
		return
	}

	//解释规则，开头是a,中间是数字，结尾是c, 也可以直接写a\dc
	reg2 := regexp.MustCompile(`a[0-9]c`)
	if reg2 == nil {
		fmt.Println("regexp error")
		return
	}

	//根据规则提取关键信息,第一个参数是提取关键信息的字符串，第二个是截取的个数，小于0表示去全部的
	result1 := reg1.FindAllStringSubmatch(buf, -1)
	result2 := reg2.FindAllStringSubmatch(buf, -1)
	fmt.Println(result1)
	fmt.Println(result2)

	//取出标准的小数, +表示匹配前一个字符的一次或多次，不加+号，输出结果是*.*样式的，加了+号，就是***.****样式的，他会根据指定的类型多次匹配
	num := "3.14 567 agsdg 1.23 7. 8.99 lsdljgl 6.66"
	reg3 := regexp.MustCompile(`\d+\.\d+`)
	if reg3 == nil {
		fmt.Println("regexp error")
		return
	}
	result3 := reg3.FindAllStringSubmatch(num, -1)
	fmt.Println(result3)


	//爬虫
	//``里边表示原生字符串
	str := `<div>aaaaaaa</div><div>111111</div><div>222222</div><div>565
656</div>`
	//*?表示匹配前一个字符多次，这里表示匹配多次任意字符
	reg4 := regexp.MustCompile(`<div>(?s:(.*?))</div>`)
	if reg4 == nil {
		fmt.Println("regexp error")
		return
	}
	result4 := reg4.FindAllStringSubmatch(str, -1)
	fmt.Println(result4)
	fmt.Println("-----------------")
	//去掉<>
	for _, data := range result4{
		fmt.Println(data[1])
	}
}
